/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.modelo.Secretaria;
import br.com.foxinline.modelo.Setor;
import br.com.foxinline.modelo.Usuario;
import br.com.foxinline.servico.SecretariaServico;
import br.com.foxinline.servico.SetorServico;
import br.com.foxinline.servico.UsuarioServico;
import br.com.foxinline.util.Msg;
import br.com.foxinline.utilitarios.EmailUtilitario;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author ely
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarSecretaria implements Serializable{

    @EJB
    SecretariaServico secretariaServico;
    @EJB
    SetorServico setorServico;
    @EJB
    UsuarioServico usuarioServico;
    private Secretaria secretaria;
    private List<Secretaria> secretarias;
    private Secretaria secretariaEditar;
    private Secretaria secretariaVisualizar;
    private Secretaria secretariaExcluir;
    private Secretaria secretariaUsuario;
    private Setor setorEditar;
    private Setor setorExcluir;
    private List<Setor> setoresEditar;
    private List<Setor> setoresVisualizar;
    private String secEd;
    private String secVi;
    private String secUs;
    //Usuario Setor
    private List<Setor> setoresUsuario;
    private List<Usuario> usuarios;
    private Usuario usuarioMsg;
    private Usuario usuarioLogado;

    @PostConstruct
    public void init() {
        secretaria = new Secretaria();
        secretarias = new ArrayList<Secretaria>();
        setorEditar = new Setor();
        usuarioMsg = new Usuario();
        usuarioLogado = usuarioServico.getCurrentUser();
        setorExcluir = new Setor();

        Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        secEd = params.get("secEd");
        secVi = params.get("secVi");
        secUs = params.get("secUs");
        secretarias = secretariaServico.findLimit();
        paramPost();
    }

    public void pesquisarSecretaria() {
        secretarias = secretariaServico.pesquisarSecretaria(secretaria);
    }

    public void add() {
        if (!setorEditar.getNome().equals("")) {
            if (!setoresEditar.contains(setorEditar)) {
                setoresEditar.add(setorEditar);
                setorEditar = new Setor();
            }
        } else {
            Msg.messagemWarn("o campo nome setor é obrigatório");
        }
    }

    public void edit(Setor parametro) {
        setorEditar = parametro;
        setoresEditar.remove(parametro);
    }

    public void usuarioMensagem(Usuario u) {
        usuarioMsg = u;
        System.err.println(usuarioMsg);
    }

    public void removerSetor() {
        try {
            setorExcluir.setAtivo(Boolean.FALSE);
            setorServico.atualizar(setorExcluir);
            setoresEditar.remove(setorExcluir);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void deletar() {
        try {
            secretariaExcluir.setAtivo(Boolean.FALSE);
            secretariaServico.atualizar(secretariaExcluir);
            secretarias.remove(secretariaExcluir);
            Msg.messagemInfo(Msg.SuccessFull);
        } catch (Exception e) {
            e.printStackTrace();
            Msg.messagemError(Msg.Failure);
        }
    }

    public List<Usuario> usuarioSetor(Setor setor) {
        return usuarioServico.usuarioSetor(setor);
    }

    public void paramPost() {
        try {
            if (secEd != null) {
                secretariaEditar = secretariaServico.pesquisar(Long.parseLong(secEd));
                setoresEditar = secretariaServico.findSetores(secretariaEditar);
            }
            if (secVi != null) {
                secretariaVisualizar = secretariaServico.pesquisar(Long.parseLong(secVi));
                setoresVisualizar = secretariaServico.findSetores(secretariaVisualizar);

            }
            if (secUs != null) {
                secretariaUsuario = secretariaServico.pesquisar(Long.parseLong(secUs));
                setoresUsuario = secretariaServico.findSetores(secretariaUsuario);
                for (Setor s : setoresUsuario) {
                    usuarios = usuarioServico.usuarioSetor(s);
                }
            }


        } catch (Exception erro) {
        }
    }

    public void atualizar() {
        try {
            secretariaEditar.setSetores(setoresEditar);
            secretariaServico.atualizar(secretariaEditar, setoresEditar);
            Msg.messagemInfoRedirect(Msg.SuccessFull, "visualizarsecretaria.xhtml?secVi=" + secretariaEditar.getId());
        } catch (Exception e) {
            e.printStackTrace();
            Msg.messagemError(Msg.Failure);
        }
    }

    public void enviandoEmail() {
        EmailUtilitario emailUtilitario = new EmailUtilitario();
        emailUtilitario.enviarEmail(usuarioMsg.getEmail(), usuarioMsg.getMsg(), usuarioLogado.getNome());
    }

    public Secretaria getSecretaria() {
        return secretaria;
    }

    public void setSecretaria(Secretaria secretaria) {
        this.secretaria = secretaria;
    }

    public List<Secretaria> getSecretarias() {
        return secretarias;
    }

    public void setSecretarias(List<Secretaria> secretarias) {
        this.secretarias = secretarias;
    }

    public Secretaria getSecretariaEditar() {
        return secretariaEditar;
    }

    public void setSecretariaEditar(Secretaria secretariaEditar) {
        this.secretariaEditar = secretariaEditar;
    }

    public Setor getSetorEditar() {
        return setorEditar;
    }

    public void setSetorEditar(Setor setorEditar) {
        this.setorEditar = setorEditar;
    }

    public List<Setor> getSetoresEditar() {
        return setoresEditar;
    }

    public void setSetoresEditar(List<Setor> setoresEditar) {
        this.setoresEditar = setoresEditar;
    }

    public List<Setor> getSetoresVisualizar() {
        return setoresVisualizar;
    }

    public void setSetoresVisualizar(List<Setor> setoresVisualizar) {
        this.setoresVisualizar = setoresVisualizar;
    }

    public Secretaria getSecretariaVisualizar() {
        return secretariaVisualizar;
    }

    public void setSecretariaVisualizar(Secretaria secretariaVisualizar) {
        this.secretariaVisualizar = secretariaVisualizar;
    }

    public List<Setor> getSetoresUsuario() {
        return setoresUsuario;
    }

    public void setSetoresUsuario(List<Setor> setoresUsuario) {
        this.setoresUsuario = setoresUsuario;
    }

    public List<Usuario> getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }

    public Usuario getUsuarioMsg() {
        return usuarioMsg;
    }

    public void setUsuarioMsg(Usuario usuarioMsg) {
        this.usuarioMsg = usuarioMsg;
    }

    public Secretaria getSecretariaExcluir() {
        return secretariaExcluir;
    }

    public void setSecretariaExcluir(Secretaria secretariaExcluir) {
        this.secretariaExcluir = secretariaExcluir;
    }

    public Setor getSetorExcluir() {
        return setorExcluir;
    }

    public void setSetorExcluir(Setor setorExcluir) {
        this.setorExcluir = setorExcluir;
    }
}
